Asynchronously Requesting Information From A Camera Device

ABSTRACT

Image transport includes receiving, at an accessory camera device, an asynchronous operation request from an electronic device for a first quantity of image data, determining, by the accessory camera device, a second quantity of image data that the accessory camera device is capable of transmitting to the asynchronous operation request, transmitting an indication of the second quantity of image data to the electronic device, and sending a response comprising the second quantity of image data to the electronic device.

BACKGROUND

This disclosure relates generally to the field of image transport, andmore particularly to the field of asynchronously requesting informationfrom a camera device. More specifically, this disclosure relates toasynchronously requesting and transmitting data information between anelectronic device and an accessory camera device.

Digital cameras have become ubiquitous in today's electronic devices.Further, users often access or use photos on additional devices, for usein photography applications, image editing, and the like. Becausedigital cameras may be standalone devices, or part of a different devicethan that on which a user wishes to store or access the image data,image transport must occur. Typically, image data may be transferredbetween devices using a protocol, such as Picture Transport Protocol(PTP).

One drawback in the use of an accessory camera device is when requestingimages from an accessory camera device, the capabilities of theaccessory camera device may not be known to the requesting device. Forexample, the accessory camera device may be busy with other activitiesat the time of a request, or may have limited bandwidth.

SUMMARY

In one embodiment, a method for managing a secure session is disclosed.The method includes receiving, at an accessory camera device, anasynchronous operation request from an electronic device for a firstquantity of image data, determining, by the accessory camera device, asecond quantity of image data that the accessory camera device iscapable of transmitting to the asynchronous operation request,transmitting an indication of the second quantity of image data to theelectronic device, and sending a response comprising the second quantityof image data to the electronic device.

In another embodiment, the method may be embodied in computer executableprogram code and stored in a non-transitory storage device. In yetanother embodiment, the method may be implemented by an electronicdevice.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows, in block diagram form, a simplified block diagram of anelectronic device and accessory device, according to one or moreembodiments.

FIG. 2 shows, in flow chart form, a method for asynchronously requestingimage data in accordance with one or more embodiments.

FIG. 3 shows, in flow diagram form, a method for transmitting imagethumbnails in accordance with one or more embodiments.

FIG. 4A shows, in flow diagram form, a first part of a method fortransmitting image thumbnails in multiple transmissions in accordancewith one or more embodiments.

FIG. 4B shows, in flow diagram form, a second part of a method fortransmitting image thumbnails in multiple transmissions in accordancewith one or more embodiments.

FIG. 5 shows, in block diagram form, a simplified multifunctional deviceaccording to one or more embodiments.

DETAILED DESCRIPTION

This disclosure pertains to systems, methods, and computer readablemedia for asynchronously requesting information from a camera device. Ingeneral, techniques are disclosed for asynchronously requesting andreceiving image data from an accessory camera device. An electronicdevice may request a particular amount and/or type of image data fromthe accessory camera device. The camera device may respond with how muchdata the accessory camera device is capable of sending at the particulartime, and the electronic device may either cancel the request and sendanother, or continue with the request based on the capability of theaccessory camera device. In one or more embodiments, the accessorycamera device may only be capable of sending less data than requested.The electronic device may follow up with a request for the remainingimage data after the initial batch of data is received.

In the following description, for purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the inventive concept. As part of this description,some of this disclosure's drawings represent structures and devices inblock diagram form in order to avoid obscuring the disclosed subjectmatter. In this context, it should be understood that references tonumbered drawing elements without associated identifiers (e.g., 100)refer to all instances of the drawing element with identifiers (e.g.,100 a and 100 b). Further, as part of this description, some of thisdisclosure's drawings may be provided in the form of a flow diagram. Theboxes in any particular flow diagram are presented in a particularorder. However, it should be understood that the particular flow of anyflow diagram is used only to exemplify one embodiment. In otherembodiments, any of the various components depicted in the flow diagrammay be deleted, or the components may be performed in a different order,or even concurrently. In addition, other embodiments may includeadditional steps not depicted as part of the flow diagram. The languageused in this disclosure has been principally selected for readabilityand instructional purposes, and may not have been selected to delineateor circumscribe the inventive subject matter. Reference in thisdisclosure to “one embodiment” or to “an embodiment” means that aparticular feature, structure, or characteristic described in connectionwith the embodiment is included in at least one embodiment of theinvention, and multiple references to “one embodiment” or to “anembodiment” should not be understood as necessarily all referring to thesame embodiment or to different embodiments.

It should be appreciated that in the development of any actualimplementation (as in any development project), numerous decisions mustbe made to achieve the developers' specific goals (e.g., compliance withsystem and business-related constraints), and that these goals will varyfrom one implementation to another. It will also be appreciated thatsuch development efforts might be complex and time consuming, but wouldnevertheless be a routine undertaking for those of ordinary skill in theart of image capture having the benefit of this disclosure.

FIG. 1 shows, in block diagram form, an overall view of a system diagramcapable of supporting asynchronous request of image information from anaccessory camera device, according to one or more embodiments.Specifically, FIG. 1 depicts an electronic device 100 that is a computersystem. Electronic Device 100 may be connected to other network devicesacross a network, such as mobile devices, tablet devices, desktopdevices, as well as network storage devices such as servers and thelike. In various embodiments, Electronic Device 100 may comprise adesktop computer, a laptop computer, a video-game console, an embeddeddevice, a mobile phone, tablet computer, personal digital assistant,portable music/video player, or any other electronic device thatincludes a camera system.

Electronic Device 100 may include a central processing unit (CPU) 130.Processor 130 may be a system-on-chip such as those found in mobiledevices and include one or more dedicated graphics processing units(GPUs). Electronic Device 100 may also include a memory 140 and storage150. Memory 140 and storage 150 may each include one or more differenttypes of memory, which may be used for performing device functions inconjunction with CPU 130. For example, memory 140 and storage 150 mayinclude cache, ROM, and/or RAM. Memory 140 and storage 150 may storevarious programming modules during execution, including variousapplications. In one or more embodiments, memory 140 may includeapplications directed to image data, such as photo application 155, andimage application 165. Further, photo application 155 and imageapplication 165 may include additional submodules, such as image captureframework 160. Electronic device 100 may also include a camera 120.Camera 120 may include an image sensor, a lens stack, and othercomponents that may be used to capture images.

In one or more embodiments, storage 150 may include any storage mediaaccessible by a computer during use to provide instructions and/or datato the computer, and may include multiple instances of a physical mediumas if they were a single physical medium. For example, amachine-readable storage medium may include storage media such asmagnetic or optical media, e.g., disk (fixed or removable), tape,CD-ROM, DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW, or Blu-Ray. Storage mediamay further include volatile or non-volatile memory media such as RAM(e.g., synchronous dynamic RAM (SDRAM), double data rate (DDR, DDR2,DDR3, etc.) SDRAM, low-power DDR (LPDDR2, etc.) SDRAM, RAMBUS DRAM(RDRAM) (RAMBUS is a registered trademark of Rambus Inc.), static RAM(SRAM)), ROM, non-volatile memory (e.g., Flash memory) accessible via aperipheral interface such as the USB interface, etc. Storage media mayinclude micro-electro-mechanical systems (MEMS), as well as storagemedia accessible via a communication medium such as a network and/or awireless link. Storage 150 may include photo store 170. In one or moreembodiments, photo store 170 may store image data regarding imagescaptured by camera 120 or accessory camera device 175. In one or moreembodiments, image data may include, for example, digital images,thumbnail images, metadata regarding digital images, and the like.

In one or more embodiments, electronic device 100 may be operativelyconnected to an accessory camera device 175. In one or more embodiments,the electronic device 100 and accessory camera device 175 may beoperatively connected across a network, such as a WAN, LAN, or theinternet. In one or more embodiments, the electronic device 100 andaccessory camera device 175 may be connected by Bluetooth or a USBconnection.

In one or more embodiments, accessory camera device may include, atleast, a camera 180, a memory 185, and a CPU 190. Camera 120 may includean image sensor, a lens stack, and other components that may be used tocapture images. CPU 190 may be a system-on-chip such as those found inmobile devices and include one or more dedicated graphics processingunits (GPUs).

Memory 185 may include one or more different types of memory, which maybe used for performing device functions in conjunction with CPU 190.Memory 185 may include applications that run on accessory camera device175, such as transport module 195. In one or more embodiments,application on the accessory camera device 175, such as transport module195, may be utilized for management of operations of the camera 180. Inaddition, transport module 195 may be utilized to manage image data onaccessory camera device 175, and to communicate with electronic device100. In one or more embodiments, accessory camera device 175 may includeadditional storage that may store image data, such as digital images,thumbnails for the digital images, metadata for the digital images, andthe like. The image data stored in storage in accessory camera device175 may be generated from images captured by camera 180.

For example, in one or more embodiments, image capture framework 160 maybe configured to generate and send asynchronous requests to accessorycamera device 175. In one or more embodiments, the image captureframework 160 may request image data from the accessory camera device175. The image capture framework may obtain image data from accessorycamera device 175 for use by photo application 155, image application165, or other applications on electronic device 100. In one or moreembodiments, image capture framework 160 may generate and transmitasynchronous requests to the accessory camera device for image data.

In one or more embodiment, transport module 195 may manage requestsreceived from electronic device 100 for image data. In one or moreembodiments, accessory camera device 175 may receive a request for imagedata from electronic device 100 at a time when accessory camera device175 is occupied with other processes. In one or more embodiments, thetransport module 195 manages requests from the electronic device byinitially responding with an indication of the capability of theaccessory camera device to respond to the request. For example, theaccessory camera device may be able to fully respond to the request ifthe request is small and the accessory camera device 175 is not busy. Asanother example, the accessory camera device may only be able to respondwith a partial set of image data requested, or may not be able torespond at all. In one or more embodiments, the accessory camera devicemay wait for a request for results from the electronic device 100 afterindicating the capability of the accessory camera device 175, or theaccessory camera device 175 may respond with image data based on thecapabilities of the accessory camera device 175 at the time of therequest.

Turning to FIG. 2, an example a method for asynchronously requestingimage data in accordance with one or more embodiments is presented. Itshould be understood that the various components of the flow chartdescribed below may be performed in a different order or simultaneously,and some components may even be omitted in one or more embodiments. Forpurposes of this example, the various steps occur within electronicdevice 100 and accessory camera device 175. In one or more embodiments,steps performed by the electronic device may be performed by computercode in memory 185, such as transport module 195. Similarly, stepsdepicted as performed by accessory camera device 175 may be performed bycomputer code in memory 140, such as image capture framework 160.

The flow chart begins at 205, when the electronic device 100 transmitsan asynchronous operation for receiving a first amount of image datafrom an accessory camera device 175. In one or more embodiments, theasynchronous operation may include such operations as getting objectinformation from a storage of accessory camera device 175, gettingthumbnails, with or without metadata, getting empty images, such as JPEGimages with metadata, and the like. For example, Asynchronous operationcodes may include requestThumbnails, requestMetadata,requestThumbnailsWithMetadata, retrieve Thumbnails, retrieveMetadata,retrieveThubnailsWithMetadata, and the like. In one or more embodiments,the asynchronous operation may include one or more parameters. In one ormore embodiments, the one or more parameters may include an operationcode, a storage ID, an object handle array, a quality parameterindicating the quality of the requested data, and geometric dimensiondata. As an example, regarding thumbnail images, a default size may be640×480 pixels. However, other resolutions may include 1136×640,853×640, 960×640, or 640×640. In one or more embodiments, eachresolution may respectively be described as a parameter value of 0x000,0x0001, 0x0010, 0x0100, and 0x1000. In one or more embodiments, theelectronic device 100 may also transmit an ObjectHandleArray, which mayindicate an object with which the data may be transmitted.

The flow chart continue at 210 where the accessory camera device 175receives the asynchronous operation for receiving image data. The flowchart continues at 215 where the accessory camera device 175 determinesa capability of the device to send the requested amount of data. In oneor more embodiments, the accessory camera device may be capable of fullyresponding to the asynchronous operation, partially responding to theasynchronous operation, or not capable at all of responding to theasynchronous operation. The capabilities of the accessory camera device175 may be determined, for example, on current processes executing onCPU 190, hardware capabilities of accessory camera device 175, availablebandwidth, and the like. Thus, in one or more embodiments, the secondamount of data may be the same amount of data as requested, a lesseramount of data as requested, or no data.

At 220, the accessory camera device 175 transmits and indication of theamount of data that the accessory device 175 is able to generate andtransmit based on the asynchronous operation. In one or moreembodiments, the accessory camera device 175 may transmit a messageacknowledging the asynchronous operation, as well as a ready response.That is, in one or more embodiments, a first message may indicate to theelectronic device 100 that the asynchronous operation is received, andthe second message includes information regarding the capability of theaccessory device. In the event the accessory device cannot handle theasynchronous operation, the message acknowledging the response mayinclude information regarding why the accessory device 175 was unable toprocess the request, such as that the operation is not supported, thesession is not open, the transaction ID or object handle are invalid,the store is unavailable, or a certain parameter in the asynchronousoperation is not supported. In one or more embodiments, the readyresponse may indicate either that the accessory device 175 is ready tohandle the asynchronous operation or not. In addition, if the accessorydevice 175 is able to handle at least part of the request, then theready message may also include the operation code identifying theasynchronous request for which the accessory device 175 is responding, atotal size of the data capable of being generated and transmitted byaccessory device 175.

At 225, electronic device 100 receives the indication of the capabilityof the accessory camera device 175 to respond to the asynchronousoperation. In one or more embodiments, the electronic device 100 mayalso receive the response message indicating that the accessory device175 acknowledges the asynchronous operation.

The flow chart continues at 230 and the electronic device 100 transmitsa request for the amount of data that the accessory camera device 175indicated was capable of generating and transmitting. In one or moreembodiments, the request message may include various parameters. Theparameters in the request message may include, for example, an operationcode indicating the asynchronous operation for which the request messageis associated.

In one or more embodiments, the electronic device 100 may instead wishto request a different amount or type of data, after receiving theresponse from the accessory device 175. For example, by the time theelectronic device 100 receives the ready message, a user at theelectronic device may determine that a different amount or type of datais preferred. Although not shown, the electronic device may optionallytransmit a second asynchronous operation. In one or more embodiments,the accessory device 175 may cancel an incomplete first asynchronousoperation in response to receiving a second asynchronous operation.

Returning to FIG. 2, the flow chart continues at 235 and, in response toreceiving the request for the second amount of data, the accessorydevice 175 may generate the requested second amount of data. In one ormore embodiments, the accessory device 175 may begin generating thesecond amount of data at a different time, such as in response todetermining the capability of the accessory device 175 to send thesecond amount of data. Once the image data is generated, then the flowchart continues at 240, and the accessory device 175 transmits thegenerated image data to the electronic device 100.

FIG. 3 shows, in flow diagram form, a method for transmitting imagethumbnails in accordance with one or more embodiments. FIG. 3 shows oneexample of the use of asynchronous operations by an electronic device torequest image data, in this case thumbnail images, from an accessorycamera device 175.

The flow diagram when electronic device 100 sends an asynchronousoperation 305 to accessory device 175. In one or more embodiments, theAsynchronous Operation may be identified as AsyncRequestData, and mayinclude several parameters. As indicated, the first parameter mayidentify a type of operation requested. In the example flow diagram,asynchronous operation 305 is AsyncRequestThumbnailObjects. Theoperation type may additionally, or alternatively, include a codeindicating the type of operation. In the example, the code 0xF000identifies that thumbnail objects are requested. In one or moreembodiments, the electronic device 100 may also transmit a data message310.

Data message 310 may include, for example, data to enable the responderto respond to the request. In one or more embodiments, these may includeOperationCodeForAsyncRequest, NumObjectsRequested, Preferred Resolution,and ObjectHandleArray. The various parameters in the Data message 310may identify, for example, a code for the particular request, a numberof objects requested, a preferred resolution of the objects requested,and an object handle array with which the responder should respond withthe data.

In response to receiving the asynchronous operation 305, the accessorydevice 175 may reply with a response message 315. As indicated, theresponse message 315 may indicate that the asynchronous operation isacknowledged. Further, a ready response 320 is generated by theaccessory device 175. As described above, the ready response may includean indication of the asynchronous operation to which the accessorydevice 175 is responding. In the example, the accessory device 175 isresponding to the asynchronous operation with an identification of0xF000, in this example a request for thumbnails, in ready response 320.In addition, ready response indicates that the image data is ready to beretrieved. In one or more embodiments, the image data may be generatedand ready for transmission when the ready response 320 is transmitted,or the image data may be ready to be generated. As depicted, the readyresponse 320 includes an indication of the capability of the accessorydevice 175 to respond to the asynchronous operation. In one or moreembodiments, the “Total Data” parameter value may indicate the size, inbytes for example, of the image data the accessory device 175 is capableof sending to the electronic device 100.

In response to receiving the ready message, the electronic device 100may send a request message 325, in this example identified asAsycRetrieveData. As shown above, AsyncRetrieveData may have its owncode, as 0xF003. In one or more embodiments, the electronic device 100may wait for the ready message 320 before transmitting the requestmessage 325. As depicted in example request message 325, the requestmessage may include an operation code parameter. After receiving therequest message 325, the accessory device 175 may send a data message330 with a thumbnail array comprising the requested data. The responsemay include a number of objects requested, a number of objects returned,a total data size, and the object handle data array. In one or moreembodiments, the accessory device 175 may also transmit a responsemessage 335 indicating that the transmission of the image data requestedin the asynchronous operation 305 is complete.

FIGS. 4A-4B show, in flow diagram form, a method for transmitting imagethumbnails in accordance with one or more embodiments. FIGS. 4A-4B showanother example of the use of asynchronous operations by an electronicdevice to request image data, in this case thumbnail images, from anaccessory camera device 175. FIGS. 4A-4B are distinguishable from FIG. 3because in FIGS. 4A-4B, the accessory device can only generate andtransmit a portion of the originally requested data.

The flow diagram when electronic device 100 sends an asynchronousoperation to accessory device 175. In the example flow diagram,asynchronous operation 305 is called AsyncGetThumbnails. Theasynchronous operation 405 in the example includes three parameters. Thefirst parameter indicates that the request type isAsyncRequestThumbObjects because the electornic device 100 is requestingthumbnails. In one or more embodiments, the electronic device 100 mayalso transmit a data message 410. Data message 410 may include, forexample, various parameters that indicate the type of data requested.The parameters could indicate, for example, that the electronic device100 is requesting 640×480 thumbnails of JPEG quality 75 without embeddedmetadata in a storage of the accessory device 175. In this example, datamessage 410 may also include an indication that the electronic device100 is requesting 50 thumbnails from accessory device 175.

In response to receiving the asynchronous operation 405, the accessorydevice 175 may reply with a response message 415. As indicated, theresponse message 415 may indicate that the asynchronous operation isacknowledged. Further, a ready response 420 is generated by theaccessory device 175. As described above, the ready response may includean indication of the asynchronous operation to which the accessorydevice 175 is responding. In the example, the accessory device 175 isresponding to the asynchronous operation with an identification of0xF000, in this example a request for thumbnails, in ready response 420.In addition, ready response indicates that the image data is ready to beretrieved. In one or more embodiments, the image data may be generatedand ready for transmission when the ready response 420 is transmitted,or the image data may be ready to be generated. As depicted, the readyresponse 420 includes an indication of the capability of the accessorydevice 175 to respond to the asynchronous operation. In one or moreembodiments, the “TotalSize” parameter value may indicate the size, inbytes for example, of the image data the accessory device 175 is capableof sending to the electronic device 100. In the example, accessorydevice 175 may be able to only generate and transmit a portion of the 50thumbnails at the size and quality requested, for example 40 thumbnails.

In response to receiving the ready message, the electronic device 100may send a request message 425. In one or more embodiments, theelectronic device 100 may wait for the ready message 420 beforetransmitting the request message 425. As depicted in example requestmessage 425, the request message may include an operation codeparameter.

After receiving the request message 425, the accessory device 175 maysend a data message 430 with a thumbnail array comprising the requesteddata. The data message 430 may also indicate that the number ofrequested thumbnails was 50 but the number of thumbnails returned was40. Thus, in one or more embodiments, the accessory device 175 maygenerate and send less data than originally requested, and may indicateto the requesting electronic device 100 how much data is transmittedcompared to how much data was originally requested. In one or moreembodiments, the accessory device 175 may also transmit a responsemessage 435 indicating that the transmission of the image data requestedin the asynchronous operation 405 is complete to the point that theaccessory device 175 indicated was possible.

The flow diagram continues at 445. After the accessory device 175returns the initial 40 images, then the electronic device 100 may sendan additional asynchronous operation 445 for more thumbnails withoutembedded metadata in a storage of the accessory device 175. In one ormore embodiments, the electronic device 100 may also transmit a datamessage 450. Data message 450 may include, for example,ObjectHandleArray. In this example, data message 450 may also include anindication that the electronic device 100 is requesting the remaining 10thumbnails from accessory device 175.

The flow diagram continues at FIG. 4B. In response to receiving theasynchronous operation 445, the accessory device 175 may reply with aresponse message 455. As indicated, the response message 455 mayindicate that the asynchronous operation is acknowledged. Further, aready response 460 is generated by the accessory device 175. Asdescribed above, the ready response may include an indication of theasynchronous operation to which the accessory device 175 is responding,in this example 0xF000. In the example, the accessory device 175 isresponding to the asynchronous operation with an identification of0x9401 in ready response 460. In addition, ready response indicates thatthe image data is ready to be retrieved. In one or more embodiments, theimage data may be generated and ready for transmission when the readyresponse 460 is transmitted, or the image data may be ready to begenerated. As depicted, the ready response 460 includes an indication ofthe capability of the accessory device 175 to respond to theasynchronous operation through the parameter TotalSize. In the example,accessory device 175 may be able to generate and transmit the remaining10 thumbnails at the size and quality requested.

In response to receiving the ready message, the electronic device 100may send a request message 465. In one or more embodiments, theelectronic device 100 may wait for the ready message 460 beforetransmitting the request message 465. As depicted in example requestmessage 465, the request message may include an operation codeparameter.

After receiving the request message 465, the accessory device 175 maysend a data message 470 with a thumbnail array comprising the remaining10 thumbnails. The data message 430 may also indicate that the number ofrequested thumbnails was 10 and the number of thumbnails returned was10. Thus, in one or more embodiments, the accessory device 175 maygenerate and send the same amount data as originally requested, and mayindicate to the requesting electronic device 100 how much data istransmitted compared to how much data was originally requested. In oneor more embodiments, the accessory device 175 may also transmit aresponse message 475 indicating that the transmission of the image datarequested in the asynchronous operation 445 is complete to the pointthat the accessory device 175 indicated was possible.

Referring now to FIG. 5, a simplified functional block diagram ofillustrative multifunction electronic device 500, such as electronicdevice 100 or accessory camera device 175 according to one or moreembodiments, is shown according to one embodiment. Multifunctionelectronic device 500 may include processor 505, display 510, userinterface 515, graphics hardware 520, device sensors 525 (e.g.,proximity sensor/ambient light sensor, accelerometer and/or gyroscope),microphone 530, audio codec(s) 535, speaker(s) 540, communicationscircuitry 545, digital image capture unit 550 video codec(s) 555, memory560, storage device 565, and communications bus 570. Multifunctionelectronic device 500 may be, for example, a digital camera or apersonal electronic device such as a personal digital assistant (PDA),personal music player, mobile telephone, or a tablet computer. In someembodiments, multifunction electronic device 500 corresponds toElectronic Device 100.

Processor 505 may execute instructions necessary to carry out or controlthe operation of many functions performed by device 500 (e.g., such asthe generation and/or processing of images in accordance with thisdisclosure). Processor 505 may, for instance, drive display 510 andreceive user input from user interface 515. User interface 515 may allowa user to interact with device 500. For example, user interface 515 cantake a variety of forms, such as a button, keypad, dial, a click wheel,keyboard, display screen and/or a touch screen. Processor 505 may also,for example, be a system-on-chip such as those found in mobile devicesand include a dedicated graphics processing unit (GPU). Processor 505may be based on reduced instruction-set computer (RISC) or complexinstruction-set computer (CISC) architectures or any other suitablearchitecture and may include one or more processing cores. Graphicshardware 520 may be special purpose computational hardware forprocessing graphics and/or assisting processor 505 to process graphicsinformation. In one embodiment, graphics hardware 520 may include aprogrammable graphics processing unit (GPU).

Sensor and camera circuitry 550 may capture still and video images thatmay be processed, at least in part, by video codec(s) 555 and/orprocessor 505 and/or graphics hardware 520, and/or a dedicated imageprocessing unit incorporated within circuitry 550. Images so capturedmay be stored in memory 560 and/or storage 565. Memory 560 may includeone or more different types of media used by processor 505 and graphicshardware 520 to perform device functions. For example, memory 560 mayinclude memory cache, read-only memory (ROM), and/or random accessmemory (RAM). Storage 565 may store media (e.g., audio, image and videofiles), computer program instructions or software, preferenceinformation, device profile information, and any other suitable data.Storage 565 may include one more non-transitory storage mediumsincluding, for example, magnetic disks (fixed, floppy, and removable)and tape, optical media such as CD-ROMs and digital video disks (DVDs),and semiconductor memory devices such as Electrically ProgrammableRead-Only Memory (EPROM), and Electrically Erasable ProgrammableRead-Only Memory (EEPROM). Memory 560 and storage 565 may be used totangibly retain computer program instructions or code organized into oneor more modules and written in any desired computer programminglanguage. When executed by, for example, processor 505 such computerprogram code may implement one or more of the methods described herein.

Many other embodiments will be apparent to those of skill in the artupon reviewing the above description. The scope of the inventiontherefore should be determined with reference to the appended claims,along with the full scope of equivalents to which such claims areentitled. In the appended claims, the terms “including” and “in which”are used as the plain-English equivalents of the respective terms“comprising” and “wherein.”

1. A computer readable medium comprising computer readable code which,when executed by one or more processors, causes the one or moreprocessors to: receive, at an accessory camera device, an asynchronousoperation request from an electronic device for a first quantity ofimage data; determine, by the accessory camera device, a second quantityof image data that the accessory camera device is capable oftransmitting to the asynchronous operation request; transmit anindication of the second quantity of image data to the electronicdevice; and send a response comprising the second quantity of image datato the electronic device.